package com.yidu.demo;

/**
 * <p>@Description: 自己写一个集合类</p>
 * <p>@Author yidu-liandyao</p>
 * <p>@Date: 2021-01-06</p>
 * <p>@Time: 14:42</p>
 */
public class MyArrayList {
    Object[] objs ; //对象数组
    int index ;//索引号

    //初始化给定一个长度为10的数组
    public MyArrayList(){
        objs = new Object[10];
        index = 0 ;
    }

    /**
     * 增加值
     * @param obj 对象
     */
    public void add(Object obj){
        objs[index]=obj;
        this.index++;
        //当数组的索引号已经到最后一个位置时,开始扩容
        if(index==objs.length-1){
            Object[] objects = new Object[objs.length+objs.length/3];
            for(int i= 0 ;i<objs.length;i++){
                objects[i]= objs[i];
            }
            objs = objects;//将旧数组指向新的数组
        }
    }

    /**
     * 取值
     * @param index 索引号
     * @return
     */
    public Object get(int index){
        return objs[index];
    }


    /**
     * 返回数组的大小
     * @return
     */
    public int size(){
        return index;
    }

    /**
     * 根据索引号删除
     * @param index
     */
    public void remove(int index){

        Object[] objects=new Object[objs.length];
        int j = 0 ;
        for(int i=0;i<objs.length;i++){
            if(i==index){ //当i是删掉的那个索引号时,不添加到新的数组中
                continue;
            }
            objects[j]=objs[i]; //将原来的数组赋值给新的数组
            j++;
        }
        objs = objects;//将旧数组指向新的数组
        //移除一个对象之后,索引号-1
        this.index--;
    }
}
